#ifndef MESSAGE_H_
#define MESSAGE_H_
#include <string>
#include "common_socket.h"

using namespace std;

class Message {
protected:
	string msg;
	char id;
public:
	Message(char id) {
		this->id = id;
	}
	virtual ~Message() {
	}
	;
	//Formatea el mensaje en base a los parametros
	virtual string Format()=0;
	//Manda el mensaje por el socket
	string MsgToString() {

		msg = Format();
		//Obtengo la longitud del msg sin el id y paso a codificacion de la red
		uint32_t length = htonl(msg.size());
		//Convierto el entero en 4 chars para poder mandarlo
		char* ptr = (char*) (&length);
		//Agrego la longitud
		for (int i = sizeof(uint32_t) - 1; i >= 0; i--) {
			msg = ptr[i] + msg;
		}
		//Agrego al principio la id del msg
		msg = id + msg;
		return msg;
	}
};

#endif /* MESSAGE_H_ */
